Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Лабораторна робота №1 АМО

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2018
Тип роботи:
Лабораторна робота
Предмет:
Алгоритми та методи обчислень

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / Лабораторна робота № 1 алгоритм; властивості, параметри та характеристики складності алгоритму. " AЛГОРИТМИ ТА МЕТОДИ ОБЧИСЛЕНЬ" 1. МЕТА РОБОТИ проаналізувати складність заданих алгоритмів. ТЕОРЕТИЧНІ ВІДОМОСТІ 1.1. Здавна найбільшу увагу приділяли дослідженням алгоритму з метою мінімізації часової складності розв’язання задач. Але зміст складності алгоритму не обмежується однією характеристикою. В ряді випадків не менше значення має складність логіки побудови алгоритму, різноманітність його операцій, зв’язаність їх між собою. Ця характеристика алгоритму називається програмною складністю. В теорії алгоритмів, крім часової та програмної складності, досліджуються також інші характеристики складності, наприклад, місткісна, але найчастіше розглядають дві з них – часову і програмну. Якщо у кінцевому результаті часова складність визначає час розв’язання задачі, то програмна складність характеризує ступінь інтелектуальних зусиль, що потрібні для синтезу алгоритму. Вона впливає на витрати часу проектування алгоритму. Код програми //to measure time it is better to run with Linux #include <stdio.h> #include <stdlib.h> #include <time.h> #define N1 606 #define N2 601 #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) #define REPEAT_COUNT 1000000 #define REPEATOR(count, code) \ for (unsigned int indexIteration = (count); indexIteration--;){ code; } #define TWO_VALUES_SELECTOR(variable, firstValue, secondValue) \ (variable) = indexIteration % 2 ? (firstValue) : (secondValue); double getCurrentTime(){ clock_t time = clock(); if (time != (clock_t)-1) { return ((double)time / (double)CLOCKS_PER_SEC); } return 0.; // else } unsigned long long int f1_GCD(unsigned long long int variableN1, unsigned long long int variableN2){ unsigned long long int returnValue = 1; for(unsigned long long int i = 1, k = MIN(variableN1, variableN2); i <= k; i++){ if(!(variableN1 % i || variableN2 % i)){ returnValue = i; } } return returnValue; } unsigned long long int f2_GCD(unsigned long long int a, unsigned long long int b){ for(unsigned long long int aModB; aModB = a % b, a = b, b = aModB; ); return a; } unsigned long long int f3_GCD(unsigned long long int a, unsigned long long int b){ if(!b){ return a; } return f3_GCD(b, a % b); // else } int main() { unsigned long long int vN1 = N1, vN2 = N2, a = MAX(vN1, vN2), b = MIN(vN1, vN2), vN1_ = vN1, vN2_ = vN2, a_ = a, b_ = b, returnValue; double startTime, endTime; // f1_GCD startTime = getCurrentTime(); REPEATOR(REPEAT_COUNT, TWO_VALUES_SELECTOR(vN1, 16, vN1_); TWO_VALUES_SELECTOR(vN2, 4, vN2_); returnValue = f1_GCD(a, b); ) endTime = getCurrentTime(); printf("f1_GCD return %d \r\nrun time: %dns\r\n\r\n", returnValue, (unsigned int)((endTime - startTime) * (double)(1000000000 / REPEAT_COUNT))); // f2_GCD startTime = getCurrentTime(); REPEATOR(REPEAT_COUNT, TWO_VALUES_SELECTOR(a, 16, a_); TWO_VALUES_SELECTOR(b, 4, b_); returnValue = f2_GCD(a, b); ) endTime = getCurrentTime(); printf("f2_GCD return %d \r\nrun time: %dns\r\n\r\n", returnValue, (unsigned int)((endTime - startTime) * (double)(1000000000 / REPEAT_COUNT))); // f3_GCD startTime = getCurrentTime(); REPEATOR(REPEAT_COUNT, TWO_VALUES_SELECTOR(a, 16, a_); TWO_VALUES_SELECTOR(b, 4, b_); returnValue = f3_GCD(a, b); ) endTime = getCurrentTime(); printf("f3_GCD return %d \r\nrun time: %dns\r\n\r\n", returnValue, (unsigned int)((endTime - startTime) * (double)(1000000000 / REPEAT_COUNT))); printf("Press any key to continue . . ."); getchar(); return 0; } Висновок: На даній лабораторній роботі я проаналізував складність заданих алгоритмів.
Антиботан аватар за замовчуванням

28.05.2019 18:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини